package com.xbts.system.service;

import com.huaweicloud.sdk.vpc.v2.model.*;
import com.xbts.system.domain.dto.RegionIdDTO;

/**
 * @Author llk
 * @Date 2023/8/11 15:14
 */
public interface ICloudSecurityService {

    /**
     * 查询安全组列表
     * @param regionIdDTO 请求参数
     * @return 安全组列表
     */
    NeutronListSecurityGroupsResponse neutronListSecurityGroups(RegionIdDTO<NeutronListSecurityGroupsRequest> regionIdDTO);

    /**
     * 查询安全组
     * @param regionIdDTO 请求参数
     * @return 查询安全组
     */
    NeutronShowSecurityGroupResponse neutronShowSecurityGroup(RegionIdDTO<NeutronShowSecurityGroupRequest> regionIdDTO);

    /**
     * 创建安全组
     * @param regionIdDTO 请求参数
     * @return 创建安全组
     */
    NeutronCreateSecurityGroupResponse neutronCreateSecurityGroup(RegionIdDTO<NeutronCreateSecurityGroupRequest> regionIdDTO);

    /**
     * 更新安全组
     * @param regionIdDTO 请求参数
     * @return 更新安全组
     */
    NeutronUpdateSecurityGroupResponse neutronUpdateSecurityGroup(RegionIdDTO<NeutronUpdateSecurityGroupRequest> regionIdDTO);

    /**
     * 删除安全组
     * @param regionIdDTO 请求参数
     * @return 删除安全组
     */
    NeutronDeleteSecurityGroupResponse neutronDeleteSecurityGroup(RegionIdDTO<NeutronDeleteSecurityGroupRequest> regionIdDTO);

    /**
     * 查询安全组规则列表
     * @param regionIdDTO 请求参数
     * @return 查询安全组规则列表
     */
    NeutronListSecurityGroupRulesResponse neutronListSecurityGroupRules(RegionIdDTO<NeutronListSecurityGroupRulesRequest> regionIdDTO);

    /**
     * 查询安全组规则
     * @param regionIdDTO 请求参数
     * @return 查询安全组规则
     */
    NeutronShowSecurityGroupRuleResponse neutronShowSecurityGroupRule(RegionIdDTO<NeutronShowSecurityGroupRuleRequest> regionIdDTO);

    /**
     * 创建安全组规则
     * @param regionIdDTO 请求参数
     * @return 创建安全组规则
     */
    NeutronCreateSecurityGroupRuleResponse neutronCreateSecurityGroupRule(RegionIdDTO<NeutronCreateSecurityGroupRuleRequest> regionIdDTO);

    /**
     * 删除安全组规则
     * @param regionIdDTO 请求参数
     * @return 删除安全组规则
     */
    NeutronDeleteSecurityGroupRuleResponse neutronDeleteSecurityGroupRule(RegionIdDTO<NeutronDeleteSecurityGroupRuleRequest> regionIdDTO);
}
